package com.zs.java.blockingqueue;

import java.util.concurrent.LinkedTransferQueue;
import java.util.concurrent.TimeUnit;

/**
 * 由链表结构组成的无界阻塞队列
 * <p>
 * 是 一 个 由 链 表 结 构 组 成 的 无 界 阻 塞 TransferQueue 队 列 。 相 对 于 其 他 阻 塞 队 列 ，
 * LinkedTransferQueue 多了 tryTransfer 和 transfer 方法
 *
 * @author madison
 * @description
 * @date 2021/6/2 10:31
 */
public class LinkedTransferQueueTest {
    public static void main(String[] args) {
        LinkedTransferQueue queue = new LinkedTransferQueue();

        new Thread(() -> {
            try {
                System.out.println("等待获取数据......");
                TimeUnit.SECONDS.sleep(2);
                System.out.println("还没数据,继续等待...");
                System.out.println("获取到数据:"+queue.take());
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();

        new Thread(()->{
            try {
                System.out.println("等以后存储数据...");
                TimeUnit.SECONDS.sleep(6);
                System.out.println("马上存储数据...");
                queue.put(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }).start();
    }
}
